/*
input array :
1 2 3 4 5 6 10 8 7 9
测试数组名就是数组首个元素的地址
数组名：0x7ffe1389f330
数组首个元素的地址：0x7ffe1389f330
对数组元素进行冒泡排序，并优化排序过程：
1 2 3 4 5 6 7 8 9 
 */
#include<stdio.h>
#include<stdbool.h>
int main(){
	int a[10];
	int n = sizeof(a) / sizeof(int);
	 printf("input array :\n");
	 for(int i = 0 ; i < n ; i++){
	 	scanf("%d",&a[i]);
	 }

	 printf("测试数组名就是数组首个元素的地址\n");
	 printf("数组名：%p\n",a);
	 printf("数组首个元素的地址：%p\n",&a[0]);

	 printf("对数组元素进行排序，并优化排序过程：\n");

	 int temp;
	 //冒泡排序的优化：在某轮遍历中若没有发生，则正面剩余已经有序，无需继续遍历
	 bool flag = false;
	 for(int j = 0 ; j < n-1 ; j++){
	 	for(int k = 0 ; k < n-1-j ; k++){
			if(a[k] > a[k+1]){
				temp = a[k];
				a[k] = a[k+1];
				a[k+1] = temp;
				flag = true;
			}
		}
		if(!flag){
			break;
		}
	 }
	 for(int l = 0 ; l < n-1 ; l++ ){
	 	printf("%d ",a[l]);
	 }
	return 0;
}
